var request = require('request');
var fs = require('fs')
// 这里都是用 jptflask/l1.py 进行测试; python l1.py 即可打开服务
//================================================================
// GET
request('http://localhost:5000', function(error, response, body) {
    if (!error && response.statusCode == 200) { console.log(body) }  // <h1>Home</h1>
})
//================================================================
// POST 表单: 因为有 Restful 的风格, 所以一般把参数放到 GET 里, Post 参数很多的时候用
// request 支持 application/x-www-form-urlencoded 和 multipart/form-data 实现表单上传
// 使用 multipart/form-data 不用操心设置 header 之类的琐事, request 会帮你解决
request.post('http://localhost:5000/http', {form: {key: 'value'}})  // 下面那种也行
request.post('http://localhost:5000/http').form({key: 'value'})
// 回调必须是第二个参数, 所以很不方便
request.post('http://localhost:5000/http', function(error, response, body) {
    if (!error && response.statusCode == 200) { console.log(body) }  // {form: {key: 'value'}}
})
// 把 form 放后面
request.post('http://localhost:5000/http', function(error, response, body) {
    if (!error && response.statusCode == 200) { console.log(body) }  // {form: {key: 'value'}}
}).form({key: 'value'})
// 更加完整的写法
let options = {
    url: 'http://localhost:5000/http',
    method: "POST",
    headers: {
        "content-type": "application/json"
    },
    json: {  // <--- I have also tried calling this as "body"
        user_id: "some id...",
        user_info: "some info..."
    }
};
request(options,
    function(err, res, data) {
        // console.log('err', err)  // <---- never prints any thing from here!
        // console.log('res', res)  // 东西好多啊
        console.log('data', data)
        if (!err && res.statusCode == 200) {
            console.log(data);
        }
    }
)
//================================================================
// 流; 任何响应都可以输出到文件流
request('http://localhost:5000/http').pipe(fs.createWriteStream('tmp.json'))
// 反过来, 也可以将文件传给 PUT 或 POST 请求; 未提供 header 的情况下, 会检测文件后缀名, 在 PUT 请求中设置相应的 content-type
fs.createReadStream('tmp.json').pipe(request.post('http://localhost:5000/http'))
// 将上面两步合并
request.get('http://localhost:5000/http').pipe(request.post('http://localhost:5000/http'))
